package besteAukera;

import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;

public class Hanka extends IrudiAdapter {
	private int x;
	private int y;
	private String mota;
	private int izena;
	private Graphics graf;
	private SarreraDatu sd1;
	private IrteeraDatu irt;
	private Chip ch;
	private boolean exekutatuDa = false;
	private Vector<Loturak> lotLista = new Vector<Loturak>();
private int luzera;
	private int indizea;

	// Logika positibo edo negatiboa, honen arabera zuzen bat soilik edo
	// borobiltxoekin
	private String logika;
	private boolean loturaDu;
	private String bertEdoHoriz;
	private Color kolorea;

	// Koordenatuak chip klasetik heredatuko ditu
	public Hanka(int x1, int y1, String log, String m, int izen, Chip txipa,
			String beh) {
		x = x1;
		y = y1;
		logika = log;
		mota = m;
		izena = izen;
		kolorea = Color.black;
		sd1 = new SarreraDatu(x - 8, y - 8, 0);
		irt = new IrteeraDatu(x - 8, y - 8, 0);
		loturaDu = false;
		ch = txipa;
		bertEdoHoriz = beh;
		luzera=20;
		// TODO Auto-generated constructor stub
	}

	// irteerako balioa erakusteko
	public void setExekutatuDa(boolean exec) {
		exekutatuDa = exec;
	}

	public void dibujate(Graphics g) {
		graf = g;
		g.setColor(kolorea);
		if (bertEdoHoriz == "h") {
			if (logika.compareTo("positiboa") == 0) {
				if (mota.compareTo("i") == 0)
					g.drawLine(x, y, x - 20, y);
				else
					g.drawLine(x, y, x + 20, y);
			} else if (logika.compareTo("negatiboa") == 0) {
				if (mota.compareTo("i") == 0) {
					// g.drawOval(x-4, y-2, 4, 4);
					g.drawLine(x, y, x - 16, y);
					g.drawOval(x - 20, y - 2, 4, 4);
				} else {
					//g.drawOval(x, y - 2, 4, 4);
					g.drawLine(x , y, x + 16, y);
					 g.drawOval(x + 16, y-2, 4, 4);
				}
			}
		}
		// bertikala, koordenatuak aldatu behar dira
		else {
			if (logika.compareTo("positiboa") == 0) {
				if (mota.compareTo("i") == 0)
					g.drawLine(x, y, x, y - luzera);
				else
					g.drawLine(x, y, x, y + luzera);
			} else if (logika.compareTo("negatiboa") == 0) {
				if (mota.compareTo("i") == 0) {
					// g.drawOval(x-4, y-2, 4, 4);
					g.drawLine(x, y, x, y - (luzera-4));
					g.drawOval(x - 2, y - luzera, 4, 4);
				} else {
					g.drawOval(x-2, y+16, 4, 4);
//					g.drawLine(x, y - (luzera+4), x, y-4);
					g.drawLine(x, y , x, y+16);
					 //g.drawOval(x + 16, y-2, 4, 4);
				}
			}
		}
		if (this.loturaDu == false) {
			if (this.mota == "s") {
				sd1.marraztu(g);
				this.ch.getBalioZuzenak()[this.getIzena()] = true;
				// sd1.sarreraLotu(0);
				// txip(dee este hanka).setbaliozuzenak(en posicon de heste
				// hanka)
			}
		} else if (this.loturaDu == true) {
			if (this.mota == "s")
				sd1.ezabatu(g);
			this.ch.getBalioZuzenak()[this.getIzena()] = false;

		}
		if (exekutatuDa == true) {
			irt.marraztu(g);
		}
	}

	public boolean puntoEnComun(int x1, int y1) {
		// TODO Auto-generated method stub

		if ((y == y1) && (x == x1)) {

			return true;
		}

		return false;
	}

	public boolean areaEnComun(int x1, int y1) {
		// TODO Auto-generated method stub

		if ((y + 5 > y1) && (y - 5 < y1) && (x + 5 > x1) && (x - 5 < x1)) {

			return true;
		}

		return false;
	}

	public String getHankaMota() {
		return mota;
	}

	public void setPosicion(int x, int y) {
		this.x = x;
		this.y = y;
		sd1.setPosicion(x-8	, y-8);
		irt.setPosicion(x-8, y-8);
	}

	public int getIzena() {
		return izena;
	}

	public void setKoloreGorria() {
		kolorea = Color.red;

	}

	public void setKoloreBeltza() {
		// TODO Auto-generated method stub
		kolorea = Color.black;
	}
private void setLuzera(int luz){
	luzera=luz;
}
	public void setX(int x1) {
		x = x1;
	}

	public int getX() {
		return x;
	}

	/**
	 * Devuelve la y de la esquina superior izquierda del rectangulo
	 * 
	 * @return y de la esquina superior izquierda del rectangulo
	 */
	public int getY() {
		return y;
	}

	public void eguneratu() {
		graf.setColor(Color.red);
	}

	public String getLogika() {
		return logika;
	}

	public void bolaEzab() {
		graf.clearRect(x, y - 2, x + 20, y + 4);
		graf.drawLine(x, y, x + 20, y);
	}

	public void sarreraEzabatu() {
		sd1.loturaEzabatu();
		// irudia ezabatu
		// sd1.ezabatu(g);
	}

	public SarreraDatu getSarrera() {
		return sd1;
	}

	public IrteeraDatu getIrteera() {
		return irt;
	}

	public boolean getloturaDu() {
		return loturaDu;
	}

	public void setLoturaDu(boolean lotDu) {
		loturaDu = lotDu;
	}

	public void loturaGehitu(Loturak l) {
		lotLista.addElement(l);

	}

	public void loturaEzabatu() {
		if (lotLista.size() > 0)
			lotLista.remove(0);

	}

	public Loturak lortuLotura() {
		Loturak l2 = null;
		if (lotLista.capacity() > indizea) {
			// posible confusion entre array y vector
			l2 = lotLista.firstElement();
			indizea++;

		}
		return l2;
	}

	public int putLoturaKopurua() {
		return lotLista.capacity();
	}

	public Vector<Loturak> getLotLista() {
		return lotLista;
	}
	
}
